package com.njworkorder.Utils;

import org.apache.commons.io.FilenameUtils;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.util.ResourceUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

//import com.njworkorder.DTO.ExcelData;
//import java.util.ArrayList;
//import java.util.List;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.ss.usermodel.*;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class FileOperation {

    public static String fileSave(MultipartFile mFile, String savePath) throws IOException {

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String fileP = dateFormat.format(new Date());

        //文件存储路径
        String filePath = savePath + fileP;
        File file = new File(filePath);
        if (!file.exists()) {
            if (!file.mkdir()) throw new RuntimeException("文件创建失败");
        }
        String fileName = mFile.getOriginalFilename();
        String extension = FilenameUtils.getExtension(fileName);

        String FileNameN = FilenameUtils.getBaseName(fileName) + "_" + UUID.randomUUID().toString().replace("-","") + "." + extension;

        String fileN = filePath + "/" + FileNameN;

        mFile.transferTo(new File(fileN));

        return fileP +"/" + FileNameN;
    }

    public static boolean deleteFile(String url) throws FileNotFoundException {
        String[] split = url.split("/");
        String FileName = split[split.length - 3] + File.separator + split[split.length - 2] + File.separator + split[split.length - 1];
        File file = ResourceUtils.getFile(getExternalStaticPath() + File.separator + FileName);
        if (file.exists()) {
            return file.delete();
        }
        return false;
    }

    /**
     * 获取jar包同级目录下的static文件夹路径
     * @return static文件夹的绝对路径
     */
    public static String getExternalStaticPath() {
        // 获取jar包所在目录
        String jarDir = new ApplicationHome(FileOperation.class)
                .getSource()
                .getParentFile()
                .getPath();
        // 构建static文件夹路径
        return jarDir + File.separator + "static";
    }


//    public static List<ExcelData> readExcelFile(MultipartFile file) throws IOException {
//        List<ExcelData> dataList = new ArrayList<>();
//
//        try (Workbook workbook = createWorkbook(file)) {
//            // 获取工作表
//            Sheet sheet = workbook.getSheetAt(0);
//
//            // 从第二行开始读取（跳过表头）
//            for (int i = 2; i <= sheet.getLastRowNum(); i++) {
//                Row row = sheet.getRow(i);
//                if (row == null) continue;
//
//                // 读取两列数据
//                String column1 = getCellValue(row.getCell(0));
//                String column2 = getCellValue(row.getCell(1));
//                String column3 = getCellValue(row.getCell(2));
//                String column4 = getCellValue(row.getCell(3));
//                String column5 = getCellValue(row.getCell(4));
//                String column6 = getCellValue(row.getCell(5));
//
//                // 如果两列都为空，跳过该行
//                if (column1.isEmpty() && column2.isEmpty()
//                        && column3.isEmpty() && column4.isEmpty()
//                        && column5.isEmpty() && column6.isEmpty()) {
//                    continue;
//                }
//
//                ExcelData data = new ExcelData();
//                data.setColumn1(column1);
//                data.setColumn2(column2);
//                data.setColumn3(column3);
//                data.setColumn4(column4);
//                data.setColumn5(column5);
//                data.setColumn6(column6);
//                dataList.add(data);
//            }
//
//            return dataList;
//        } catch (Exception e) {
//            throw new IOException("读取Excel文件失败: " + e.getMessage(), e);
//        }
//    }
//
//    /**
//     * 获取单元格的值
//     */
//    private static String getCellValue(Cell cell) {
//        if (cell == null) {
//            return "";
//        }
//        String cellValue;
//        switch (cell.getCellType()) {
//            case STRING:
//                cellValue = cell.getStringCellValue();
//                break;
//            case NUMERIC:
//                if (DateUtil.isCellDateFormatted(cell)) {
//                    Date date = cell.getDateCellValue();
//                    cellValue = formatDate(date);
//                } else {
//                    // 防止数值变为科学计数法
//                    cellValue = String.valueOf(cell.getNumericCellValue());
//                    if (cellValue.contains("E")) {
//                        cellValue = String.valueOf((long) cell.getNumericCellValue());
//                    }
//                }
//                break;
//            case BOOLEAN:
//                cellValue = String.valueOf(cell.getBooleanCellValue());
//                break;
//            case FORMULA:
//                try {
//                    cellValue = String.valueOf(cell.getStringCellValue());
//                } catch (IllegalStateException e) {
//                    cellValue = String.valueOf(cell.getNumericCellValue());
//                }
//                break;
//            default:
//                cellValue = "";
//        }
//
//        return cellValue.trim();
//    }
//
//    /**
//     * 根据文件扩展名创建工作簿
//     */
//    private static Workbook createWorkbook(MultipartFile file) throws IOException {
//        String filename = file.getOriginalFilename();
//        if (filename == null) {
//            throw new IOException("文件名不能为空");
//        }
//        if (filename.toLowerCase().endsWith(".xlsx")) {
//            return new XSSFWorkbook(file.getInputStream());
//        } else if (filename.toLowerCase().endsWith(".xls")) {
//            return new HSSFWorkbook(file.getInputStream());
//        } else {
//            throw new IOException("不支持的文件格式，仅支持.xlsx和.xls文件");
//        }
//    }
//
//    /**
//     * 格式化日期
//     */
//    private static String formatDate(Date date) {
//        if (date == null) return "";
//        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
//    }

}
